﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BHXH.Core.IService;
using BHXH.Frm.Frm;
using FX.Core;
using Infragistics.Win.UltraWinGrid;
using BHXH.Core.Domain;
using Infragistics.Win.UltraWinTabControl;

namespace BHXH.Frm.FrmUserControl
{
    public partial class Dkbhxh_DanhSach : UserControl
    {
        private readonly IhosoService _hosoSrv;
        public delegate void customHandler(object sender, string i);
        public event customHandler checkIfTrue;
        public event customHandler checkIfFalse;

        public Dkbhxh_DanhSach()
        {
            InitializeComponent();
            _hosoSrv = IoC.Resolve<IhosoService>();
            LoadDataGridview();
        }
        
        public DataTable GetAllHoSo()
        {
            IList<hoso> a = _hosoSrv.layTatCaHoSo_DKBHXH_101();
            DataTable table = new DataTable();
            table.Columns.Add("STT", typeof(string));
            table.Columns.Add("Loại giấy tờ, biểu mẫu", typeof(string));
            table.Columns.Add("Chọn", typeof(bool));
            table.Columns.Add("Số lượng", typeof(int));
            table.Columns.Add("LoaiHienThi", typeof(string));
            foreach (var item in a)
            {
                table.Rows.Add(item.STT, item.Ten, item.TrangThaiChon, item.SoLuong, item.LoaiHienThi);
            }
            return table;
        }

        public void LoadDataGridview()
        {
            uG_DanhMucHS.DataSource = GetAllHoSo();
            uG_DanhMucHS.DisplayLayout.Override.ActiveCellAppearance.Reset();
            uG_DanhMucHS.DisplayLayout.Override.ActiveRowAppearance.Reset();
            lblLuuY.Text = "Đơn vị có trách nhiệm nộp toàn bộ số tiền bảo hiểm phải đóng"
                + " (hoặc số tiền bảo hiểm một tháng tham gia của toàn bộ người lao động trong \ndanh sách) "
                + " trong thời gian 03 ngày làm việc kể từ ngày cơ quan BHXH nhận hồ sơ để được cấp thẻ BHYT.";
            this.dateTimePicker1.CustomFormat = "dd/MM/yyyy";
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns[0].Width = 10;
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns[1].Width = 140;
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns[2].Width = 20;
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns[3].Width = 20;
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns[0].CellActivation = Activation.NoEdit;
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns[1].CellActivation = Activation.NoEdit;
            this.uG_DanhMucHS.Rows[1].Cells[2].Activation = Activation.NoEdit;
            this.uG_DanhMucHS.Rows[2].Cells[2].Activation = Activation.NoEdit;
            this.uG_DanhMucHS.Rows[5].Cells[2].Activation = Activation.NoEdit;
            this.uG_DanhMucHS.DisplayLayout.Bands[0].Columns["LoaiHienThi"].Hidden = true;
            for (int i = 0; i < uG_DanhMucHS.Rows.Count; i++)
            {
                if (this.uG_DanhMucHS.Rows[i].Cells[4].Value.ToString() == "0")
                {
                    uG_DanhMucHS.Rows[i].Cells[2].Hidden = true;
                    uG_DanhMucHS.Rows[i].Cells[3].Hidden = true;
                }
            }
        }
        /// <summary>
        /// Fix cứng ẩn số lượng tương ứng với các tab ẩn
        /// </summary>
        public void Hide_Soluong()
        {
            for (int i = 0; i < uG_DanhMucHS.Rows.Count; i++)
            {
                if (this.uG_DanhMucHS.Rows[i].Cells[2].Value.ToString() == "False")
                {
                    this.uG_DanhMucHS.Rows[i].Cells[3].Hidden = true;
                }
            }
        }

        private void uG_DanhMucHS_InitializeLayout_1(object sender, InitializeLayoutEventArgs e)
        {
            UltraGridColumn ugc = uG_DanhMucHS.DisplayLayout.Bands[0].Columns[2];
            ugc.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox;
            ugc.CellActivation = Activation.AllowEdit;
        }

        private void uG_DanhMucHS_CellChange(object sender, CellEventArgs e)
        {
            bool checkedState = false;
            if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Column.Index, 2))
            {
                checkedState = bool.Parse(e.Cell.Text);
            }
            if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Row.Index, 4))
            {
                if (checkedState == true)
                {
                    checkIfTrue(sender, "a01ats");
                }
                else if (checkedState == false)
                {
                    checkIfFalse(sender, "a01ats");
                }
            }
            if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Row.Index, 6))
            {
                if (checkedState == true)
                {
                    checkIfTrue(sender, "a01ts");
                }
                else if (checkedState == false)
                {
                    checkIfFalse(sender, "a01ts");
                }
            }
            if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Row.Index, 7))
            {
                if (checkedState == true)
                {
                    checkIfTrue(sender, "c15ats");
                }
                else if (checkedState == false)
                {
                    checkIfFalse(sender, "c15ats");
                }
            }
            if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Row.Index, 11))
            {
                if (checkedState == true)
                {
                    checkIfTrue(sender, "d01bts");
                }
                else if (checkedState == false)
                {
                    checkIfFalse(sender, "d01bts");
                }
            }
            if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Row.Index, 12))
            {
                if (checkedState == true)
                {
                    checkIfTrue(sender, "d02bts");
                }
                else if (checkedState == false)
                {
                    checkIfFalse(sender, "d02bts");
                }
            }
            for (int i = 0; i < uG_DanhMucHS.Rows.Count; i++)
            {
                if (StringComparer.OrdinalIgnoreCase.Equals(e.Cell.Row.Index, i))
                {
                    if (checkedState == true)
                    {
                        uG_DanhMucHS.Rows[e.Cell.Row.Index].Cells[3].Hidden = false;
                    }
                    else if (checkedState == false)
                    {
                        uG_DanhMucHS.Rows[e.Cell.Row.Index].Cells[3].Hidden = true;
                    }
                }
            }
        }
    }
}
